package st.gravel.support.compiler.ast; /* This file is automatically generated from typed smalltalk source. Do not edit by hand. (C) AG5.com */ import java.math.BigInteger; import st.gravel.support.jvm.NonLocalReturn; import st.gravel.support.compiler.ast.SystemNode; import st.gravel.support.compiler.ast.ClassDescriptionNode; import st.gravel.support.compiler.ast.ClassNode; import st.gravel.support.compiler.ast.MethodNode; public class JavaTestcaseClassWriter extends Object implements Cloneable { public static JavaTestcaseClassWriter_Factory factory = new JavaTestcaseClassWriter_Factory(); java.io.File _root; SystemNode _systemNode; public static class JavaTestcaseClassWriter_Factory extends st.gravel.support.jvm.SmalltalkFactory { public JavaTestcaseClassWriter basicNew() { JavaTestcaseClassWriter newInstance = new JavaTestcaseClassWriter(); newInstance.initialize(); return newInstance; } public JavaTestcaseClassWriter root_systemNode_(final java.io.File _anUnixFilename, final SystemNode _aSystemNode) { return this.basicNew().initializeRoot_systemNode_(_anUnixFilename, _aSystemNode); } } static public JavaTestcaseClassWriter _root_systemNode_(Object receiver, final java.io.File _anUnixFilename, final SystemNode _aSystemNode) { return factory.root_systemNode_(_anUnixFilename, _aSystemNode); } public JavaTestcaseClassWriter copy() { try { JavaTestcaseClassWriter _temp1 = (JavaTestcaseClassWriter) this.clone(); _temp1.postCopy(); return _temp1; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public JavaTestcaseClassWriter_Factory factory() { return factory; } public JavaTestcaseClassWriter initialize() { return this; } public JavaTestcaseClassWriter initializeRoot_systemNode_(final java.io.File _anUnixFilename, final SystemNode _aSystemNode) { _root = _anUnixFilename; _systemNode = _aSystemNode; this.initialize(); return this; } public JavaTestcaseClassWriter postCopy() { return this; } public java.io.File root() { return _root; } public SystemNode systemNode() { return _systemNode; } public JavaTestcaseClassWriter write() { for (final ClassDescriptionNode _each : _systemNode.classDescriptionNodes().values()) { if (_each.isSystemTest()) { JavaTestcaseClassWriter.this.write_(((ClassNode) _each)); } } return this; } public JavaTestcaseClassWriter write_(final ClassNode _aClassNode) { final MethodNode[] _testMethods; final StringBuilder[] _wstr; final String _className; final java.io.File _dir; _wstr = new StringBuilder[1]; _testMethods = st.gravel.support.jvm.ArrayExtensions.select_(_aClassNode.methods(), new st.gravel.support.jvm.Predicate1<MethodNode>() { @Override public boolean value_(final MethodNode _m) { return _m.selector().startsWith("test"); } }); if (_testMethods.length == 0) { return JavaTestcaseClassWriter.this; } _className = _aClassNode.name().asString(); _dir = new java.io.File(new java.io.File(new java.io.File(_root, "st"), "gravel"), "systemtests"); _dir.mkdirs(); _wstr[0] = st.gravel.support.jvm.WriteStreamFactory.on_(new String()); _wstr[0].append("package st.gravel.systemtests;\n\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport st.gravel.support.jvm.runtime.ImageBootstrapper;\nimport st.gravel.support.jvm.runtime.MethodTools;\n\npublic class "); _wstr[0].append(_className); _wstr[0].append(" {\n\t@Before\n\tpublic void setUp() {\n\t\tst.gravel.support.compiler.testtools.TestBootstrap.getSingleton();\n\t}\n"); for (final MethodNode _each : _testMethods) { _wstr[0].append("\t@Test\n\tpublic void "); _wstr[0].append(_each.selector()); _wstr[0].append("() throws Throwable {\n\t\tMethodTools.debugTest(\""); _wstr[0].append(_aClassNode.reference().toString()); _wstr[0].append("\", \""); _wstr[0].append(_each.selector()); _wstr[0].append("\");\n\t}\n"); } _wstr[0].append("}"); st.gravel.support.jvm.StringExtensions.writeToFile_(_wstr[0].toString(), new java.io.File(_dir, _className + ".java")); return this; } }